* net/tramp.el (tramp-echo-mark-marker-length): New defconst.
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 15 Dec 2009 21:11:39 +0000 (21:11 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 15 Dec 2009 21:11:39 +0000 (21:11 +0000)
(tramp-echo-mark, tramp-echoed-echo-mark-regexp): Use it.
(tramp-check-for-regexp): Check also, when an echoing shell stops
to echo sent commands.

lisp/ChangeLog
lisp/net/tramp.el

index 892f9e16afd1c97c09ac54ad00d74f85e6fc4105..8a7c054c83fac5c14a506a55d47c025696dfe650 100644 (file)
@@ -1,3 +1,10 @@
+2009-12-15  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-echo-mark-marker-length): New defconst.
+       (tramp-echo-mark, tramp-echoed-echo-mark-regexp): Use it.
+       (tramp-check-for-regexp): Check also, when an echoing shell stops
+       to echo sent commands.
+
 2009-12-14  Chong Yidong  <cyd@stupidchicken.com>
 
        * Makefile.in: Revert last change (Bug#5191).
index 8bc010d29b22a9aa384bded4e3114f85ec37b5d7..6d3465c6a19dc4f076d3252848c8be8890699dac 100644 (file)
@@ -948,7 +948,12 @@ the info pages.")
 (defconst tramp-echo-mark-marker "_echo"
   "String marker to surround echoed commands.")
 
-(defconst tramp-echo-mark "_echo\b\b\b\b\b"
+(defconst tramp-echo-mark-marker-length (length tramp-echo-mark-marker)
+  "String length of `tramp-echo-mark-marker'.")
+
+(defconst tramp-echo-mark
+  (concat tramp-echo-mark-marker
+         (make-string tramp-echo-mark-marker-length ?\b))
   "String mark to be transmitted around shell commands.
 Used to separate their echo from the output they produce.  This
 will only be used if we cannot disable remote echo via stty.
@@ -958,7 +963,9 @@ producing some echo which can later be detected by
 followed by an equal number of backspaces to erase them will
 usually suffice.")
 
-(defconst tramp-echoed-echo-mark-regexp "_echo\\(\b\\( \b\\)?\\)\\{5\\}"
+(defconst tramp-echoed-echo-mark-regexp
+  (format "%s\\(\b\\( \b\\)?\\)\\{%d\\}"
+         tramp-echo-mark-marker tramp-echo-mark-marker-length)
   "Regexp which matches `tramp-echo-mark' as it gets echoed by
 the remote shell.")
 
@@ -6562,7 +6569,14 @@ Erase echoed commands if exists."
          (delete-region begin (point))
          (goto-char (point-min)))))
 
-    (when (not (tramp-get-connection-property proc "check-remote-echo" nil))
+    (when (or (not (tramp-get-connection-property proc "check-remote-echo" nil))
+             ;; Sometimes, the echo string is suppressed on the remote side.
+             (not (string-equal
+                   (substring-no-properties
+                    tramp-echo-mark-marker
+                    0 (min tramp-echo-mark-marker-length (1- (point-max))))
+                   (buffer-substring-no-properties
+                    1 (min (1+ tramp-echo-mark-marker-length) (point-max))))))
       ;; No echo to be handled, now we can look for the regexp.
       (goto-char (point-min))
       (re-search-forward regexp nil t))))